package com.zxj.ds.mybatis.configuration;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;

import javax.sql.DataSource;

/**
 * Created by Administrator on 2017/5/4.
 */
@Configuration
public class DataSourceConfiguration {
    //数据库连接相关的参数：
    private String driverClassName = "com.mysql.jdbc.Driver";
    private String jdbcIpPort = "3306";
    private String jdbcUrl = "jdbc:mysql://server1:3306/%s?useUnicode=true&characterEncoding=utf8";
    private String userName = "root";
    private String password = "123";

    //连接池相关的参数：
    //等待从连接池中获得连接的最大时长（毫秒），超过这个时长还没可用的连接则发生SQLException， 缺省:30秒
    private long connectionTimeout = 30000;
    //一个连接idle状态的最大时长（毫秒），超时则被释放（retired），缺省:10分钟
    private long idleTimeout = 600000;
    //一个连接的生命时长（毫秒），超时而且没被使用则被释放（retired），缺省:30分钟，建议设置比数据库超时时长少30秒以上，
    //参考MySQL wait_timeout参数（show variables like '%timeout%';）
    private long maxLifetime = 1765000;
    //连接池中允许的最大连接数。缺省值：10；推荐的公式：((core_count * 2) + effective_spindle_count)
    private int maximumPoolSize = 15;


    @Bean()
    @Primary
    public DataSource dataSource1(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driverClassName);
        ds.setUrl(String.format(jdbcUrl, "saas"));
        ds.setUsername(userName);
        ds.setPassword(password);
        return ds;
    }

    @Bean()
    public DataSource dataSource2(){
        DruidDataSource ds = new DruidDataSource();
        ds.setDriverClassName(driverClassName);
        ds.setUrl(String.format(jdbcUrl, "saas2"));
        ds.setUsername(userName);
        ds.setPassword(password);
        return ds;
    }
}
